#ifndef _S_LIST
#define _S_LIST

#define LEVELMAX 10

#include "elementsGenerique.H"

struct SCellule
{
  Element info;
  int niveau;
  SCellule * suivant[LEVELMAX];
};

struct SListe
{
	int niveaux;
	SCellule * ad;
};

/* Precondition : Sl non initialisee
 * Postcondition : Sl initialisee avec une cellule bidon*/
void Initialisation(SListe & Sl);

void AjoutSListe(SListe & Sl,Element e,void (*p_init_elt)(Element &,Element));

void AfficheSListe(const SListe & Sl,void (*p_affichage_elt)(Element));

SCellule * RechercheElementSListe(const SListe & Sl,Element e,int (*p_comp_elt)(Element,Element));

void SuppElementSListe(SListe & Sl,Element e,int (*p_comp_elt)(Element,Element),void (*p_supp_elt)(Element &));

void CouvertureIntervalSListe (SListe& Sl, float f);

/* Precondition : Sl initialisee
 * Postcondition : Sl ne peut plus etre utilisee*/
void Testament(SListe & Sl,void (*p_supp_elt)(Element &));

#endif
